Cargamos las librerias:
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)
library(RColorBrewer)
# Carga de datos de primates
primates <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Carga geoespacial de cantones
cantones <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
quiet = TRUE
)
# Carga geoespacial de provincias
provincias <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
quiet = TRUE
)
# Asignación de CRS
st_crs(cantones) = 4326
st_crs(primates) = 4326
# Cruce espacial con la tabla de cantones, para obtener de esta forma el nombre del canton
primates <-
primates %>%
st_join(cantones["canton"])
# Suma de las especies para creación del gráfico de pastel más adelante
suma_especies <- primates %>% count(species)
En este trabajo vamos a crear un gráfico, una tabla, y un mapa con los datos de los primates en Costa Rica, con el fin de visualizarlos de mejor manera.
primates %>%
st_drop_geometry() %>%
dplyr::select(family, species, stateProvince, canton, eventDate) %>%
datatable(
colnames = c("Familia", "Especie", "Provincia", "Cantón", "Fecha"),
options = list(searchHighlight = TRUE,
language = list(url =
'//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json'),
pageLength = 10))
# Se crea la data con el total de especies
data <- suma_especies [, c('species', 'n')]
# Creación del gráfico
fig <- plot_ly(data,
labels = ~ species,
values = ~ n,
type = 'pie')
fig <-
fig %>% config(locale = "es")%>%
layout(
title = 'Cantidad de registros de especies de primates en Costa Rica',
xaxis = list(
showgrid = FALSE,
zeroline = FALSE,
showticklabels = FALSE
),
yaxis = list(
showgrid = FALSE,
zeroline = FALSE,
showticklabels = FALSE
)
)
fig
alt <- getData(
"worldclim",
var = "alt",
res = .5,
lon = -84,
lat = 10
)
altitud <- crop(alt, extent(-86, -82.3, 8, 11.3))
altitud <-
alt %>%
crop(provincias) %>%
mask(provincias)
primates %>%
dplyr::select(
family,
species,
stateProvince,
canton,
eventDate,
decimalLongitude,
decimalLatitude
) %>%
leaflet() %>%
addRasterImage(
altitud,
opacity = 0.8,
col = brewer.pal(11, "RdBu"),
group = "Altitud"
) %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addCircleMarkers(
stroke = F,
radius = 3,
fillColor = '#154360',
fillOpacity = 1,
popup = paste(
primates$stateProvince,
primates$canton.y,
primates$eventDate,
primates$decimalLongitude,
primates$decimalLatitude,
sep = '<br/>'
),
group = "primates"
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
overlayGroups = c("primates", "Altitud")
) %>%
addMiniMap(
tiles = providers$Stamen.OpenStreetMap.Mapnik,
position = "bottomleft",
toggleDisplay = TRUE
)